Window Manager Panels and Controls

This phase complements window-manager-experience-polish.md and the Tint2 review. Changes are defaults for new images/users; existing personal configurations continue to take precedence.

Features

Window manager

Changes

i3

pepvoid-i3bar retains i3status probes and adds a Pepvoid button in the status area. Click volume to open pavucontrol, right-click to mute, and use the wheel to adjust. Network opens connections, battery opens power settings, disk opens files, and clock opens the calendar. Resize mode shows instructions for exiting. Battery threshold is now a percentage, consistent with 15%.

Awesome

Independent launcher, clock, volume, and battery on each screen. One tray on the primary screen. Click sound to open pavucontrol, right-click to mute, and use the wheel to adjust. Middle-click a task to close it; right-click for minimize, maximize, float, keep above, move to another monitor, and close actions. Native menu can pause notifications. Super+comma/period switches monitors.

Qtile

generate_screens creates bars for detected screens, including monitor changes. Independent widgets and one tray on the first bar. Disconnected bars are discarded so finalized widgets are not reused. Volume reflects the PipeWire/PulseAudio destination instead of a fixed ALSA channel. Battery is hidden when absent. Super+comma/period switches monitors; Super+Shift+period moves the window to the next one.

bspwm / Herbstluftwm

Clicking a window title in Polybar opens the window switcher. Added an explicit charged-battery format. Herbstluftwm has a graphical guide on Super+F1.

Sway

Waybar has per-monitor tasks, icons, full title in the tooltip, click to activate, and middle-click to close. Workspaces are filtered by monitor. Separate microphone control: click opens inputs in pavucontrol, right-click mutes, and the wheel adjusts. Mako uses a dark/carmine theme and supports pausing.

Fluxbox

Native RootMenu button at the start of the bar (arrow in version 1.3.7). Applications submenu updates every ten seconds when .desktop files are added, changed, or removed. Writes atomically and retains the previous menu if generation fails. Watcher exits with the session. Guide is available with Super+F1 and in the menu.

IceWM

Simplified launcher bar for files and terminal while retaining the native start menu and controls. Guide is available with Super+F1 and in the menu; notification actions are in the menu.

Common Controls

On the seven X11 window managers using Dunst and on Sway/Mako:

  • Super+Ctrl+N pauses/resumes notifications.

  • Super+Ctrl+Shift+N restores the last notification.

  • Existing wallpaper shortcuts remain, including Fluxbox Super+Shift+N. Awesome uses Naughty’s native pause control in its menu.

Microphone mute shortcuts were added to bspwm, Herbstluftwm, Fluxbox, and IceWM. Existing guides were updated.

Floating-window rules for calendar/Zenity, network, printers, and authentication were added to i3, Sway, Qtile, and Awesome. Other window managers continue to use their existing dialog management.

The shared indicator ignores absent and peripheral batteries, accepts names such as CMB0, and suppresses repeated errors if the sound server is not yet available. With multiple batteries it shows the average percentage, not a runtime-weighted estimate. Power-manager startup uses the same detection; low-battery warnings remain the responsibility of the existing xfce4-power-manager.

Validation and Limits

Automated tests cover the complete i3bar JSON flow and a real click on a simulated mixer, allowed actions, battery detection, menu updates, notification-daemon selection, and Qtile widget addition/removal/reconnection. Native parsers and private graphical tests complement the suite; they do not replace testing an ISO on real hardware.

Sway does not offer traditional minimization: its buttons activate or close windows. The taskbar lists applications on the same monitor, including applications on that monitor’s other workspaces. In i3, the Pepvoid button is in the bar’s status area, after the workspace buttons.

Still pending on hardware: real sound and microphone, monitor hotplug, HiDPI, and battery. No new ISO was generated in this phase.

API References

APIs were also checked against local packages: Qtile 0.37.1, Awesome 4.3, Waybar 0.15.0, Mako 1.11.0, Fluxbox 1.3.7, and i3status 2.15.

Results for this phase: 396 pytest tests passed. Qtile started in a private Xvfb with two simulated bars and a tray; Awesome started with its widgets and logo. The new launcher processed the native i3status stream. Sway, Waybar, and Mako started in a headless compositor with private D-Bus and PipeWire/Pulse servers; the GTK tree confirmed the task and microphone modules, and a test window appeared in the taskbar. Library and resource paths were adapted only in temporary test files. No real graphical sessions were changed.